(function () {
'use strict';
var STORAGE_PREFIX = 'bs_attribution_';
var COOKIE_MAX_AGE = 60 * 60 * 24 * 90;
var QUERY_FIELDS = [
'gclid',
'gbraid',
'wbraid',
'gad_source',
'utm_source',
'utm_medium',
'utm_campaign',
'utm_term',
'utm_content',
'utm_id'
];
var FORM_FIELDS = QUERY_FIELDS.concat([
'landing_page',
'first_page',
'referrer'
]);
function cookieDomain() {
return /(^|\.)blackswanbss\.com$/i.test(window.location.hostname)
? '; Domain=.blackswanbss.com'
: '';
}
function setStoredValue(name, value, overwrite) {
if (!value) return;
var key = STORAGE_PREFIX + name;
var existing = getStoredValue(name);
if (existing && !overwrite) return;
try {
window.localStorage.setItem(key, value);
} catch (error) {
// Cookies remain the fallback when localStorage is unavailable.
}
document.cookie = encodeURIComponent(key) + '=' + encodeURIComponent(value)
+ '; Path=/; Max-Age=' + COOKIE_MAX_AGE
+ '; SameSite=Lax; Secure' + cookieDomain();
}
function getStoredValue(name) {
var key = STORAGE_PREFIX + name;
try {
var localValue = window.localStorage.getItem(key);
if (localValue) return localValue;
} catch (error) {
// Continue to the cookie fallback.
}
var encodedKey = encodeURIComponent(key) + '=';
var cookies = document.cookie ? document.cookie.split('; ') : [];
for (var i = 0; i < cookies.length; i += 1) {
if (cookies[i].indexOf(encodedKey) === 0) {
return decodeURIComponent(cookies[i].slice(encodedKey.length));
}
}
return '';
}
function clearStoredValue(name) {
var key = STORAGE_PREFIX + name;
try {
window.localStorage.removeItem(key);
} catch (error) {
// Continue to clear the cookie fallback.
}
document.cookie = encodeURIComponent(key) + '=; Path=/; Max-Age=0'
+ '; SameSite=Lax; Secure' + cookieDomain();
}
function captureAttribution() {
var params = new URLSearchParams(window.location.search);
var hasCampaignParams = QUERY_FIELDS.some(function (name) {
return Boolean(params.get(name));
});
if (hasCampaignParams) {
QUERY_FIELDS.forEach(clearStoredValue);
clearStoredValue('referrer');
}
QUERY_FIELDS.forEach(function (name) {
var value = params.get(name);
if (value) setStoredValue(name, value, true);
});
setStoredValue('landing_page', window.location.href, hasCampaignParams);
setStoredValue('first_page', window.location.href, false);
setStoredValue('referrer', document.referrer, hasCampaignParams);
}
function populateForms(root) {
var scope = root && root.querySelectorAll ? root : document;
FORM_FIELDS.forEach(function (name) {
var value = getStoredValue(name);
if (!value) return;
var fields = scope.querySelectorAll('input[name="' + name + '"]');
for (var i = 0; i < fields.length; i += 1) {
fields[i].value = value;
}
});
}
captureAttribution();
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function () {
populateForms(document);
});
} else {
populateForms(document);
}
document.addEventListener('focusin', function (event) {
var form = event.target && event.target.closest
? event.target.closest('.wpcf7-form')
: null;
if (form) populateForms(form);
});
document.addEventListener('wpcf7beforesubmit', function (event) {
populateForms(event.target || document);
});
if (window.MutationObserver) {
var observer = new MutationObserver(function (mutations) {
for (var i = 0; i < mutations.length; i += 1) {
if (mutations[i].addedNodes.length) {
populateForms(document);
break;
}
}
});
observer.observe(document.documentElement, { childList: true, subtree: true });
}
}());